package cn.sjx.send.service.impl;

import cn.hutool.core.util.HexUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.system.SystemUtil;
import cn.sjx.TioUdpClient;
import cn.sjx.send.service.ISendService;
import cn.sjx.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 发送实现类
 *
 * @Author: sjx
 * @Date: 2019年09月05日 0005 10:03:49
 */
@Service("sendService")
public class SendServiceImpl implements ISendService {

    private static final String TIO_UDP_CLIENT_LINK_STATUS = "TIO_UDP_CLIENT:LINK_STATUS:{}";

    @Autowired
    private RedisUtils redisUtils;

    private TioUdpClient tioUdpClient = null;

    @Override
    public void startUdpClient(String ip, int port) {
        if (null == tioUdpClient) {
            synchronized (SendServiceImpl.class) {
                if (null == tioUdpClient) {
                    tioUdpClient = new TioUdpClient(ip, port);
                    tioUdpClient.init();

                    String ipAddress = StrUtil.replace(SystemUtil.getHostInfo().getAddress(), ".", "_");
                    redisUtils.set(StrUtil.format(TIO_UDP_CLIENT_LINK_STATUS, ipAddress), 1);
                }
            }
        }
    }

    @Override
    public void sendHexData(String hexData) {
        tioUdpClient.getUdpClient().send(HexUtil.decodeHex(hexData));
    }

}
